#ifndef INVOKER_H
#define INVOKER_H

#include "imageset.h"
#include "command.h"

typedef struct
{
	Image* img;
	Command** undo_stack;
	Command** redo_stack;
	size_t us_size;
	size_t rs_size;
} Invoker;

Invoker* invoker_new(Image* img);
int invoker_execute(Invoker* ivk, Command* cmd);
int invoker_undo(Invoker* ivk);
int invoker_redo(Invoker* ivk);
void invoker_delete(Invoker* ivk);

#endif
